summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/psc/time/power_state_service.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/service/psc/time/power_state_service.cpp')
-rw-r--r--src/core/hle/service/psc/time/power_state_service.cpp28
1 files changed, 12 insertions, 16 deletions
diff --git a/src/core/hle/service/psc/time/power_state_service.cpp b/src/core/hle/service/psc/time/power_state_service.cpp
index b0ae71bf9..ab1d32c70 100644
--- a/src/core/hle/service/psc/time/power_state_service.cpp
+++ b/src/core/hle/service/psc/time/power_state_service.cpp
@@ -1,6 +1,7 @@
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
+#include "core/hle/service/cmif_serialization.h"
#include "core/hle/service/psc/time/power_state_service.h"
namespace Service::PSC::Time {
@@ -11,39 +12,34 @@ IPowerStateRequestHandler::IPowerStateRequestHandler(
power_state_request_manager} {
// clang-format off
static const FunctionInfo functions[] = {
- {0, &IPowerStateRequestHandler::GetPowerStateRequestEventReadableHandle, "GetPowerStateRequestEventReadableHandle"},
- {1, &IPowerStateRequestHandler::GetAndClearPowerStateRequest, "GetAndClearPowerStateRequest"},
+ {0, D<&IPowerStateRequestHandler::GetPowerStateRequestEventReadableHandle>, "GetPowerStateRequestEventReadableHandle"},
+ {1, D<&IPowerStateRequestHandler::GetAndClearPowerStateRequest>, "GetAndClearPowerStateRequest"},
};
// clang-format on
RegisterHandlers(functions);
}
-void IPowerStateRequestHandler::GetPowerStateRequestEventReadableHandle(HLERequestContext& ctx) {
+Result IPowerStateRequestHandler::GetPowerStateRequestEventReadableHandle(
+ OutCopyHandle<Kernel::KReadableEvent> out_event) {
LOG_DEBUG(Service_Time, "called.");
- IPC::ResponseBuilder rb{ctx, 2, 1};
- rb.Push(ResultSuccess);
- rb.PushCopyObjects(m_power_state_request_manager.GetReadableEvent());
+ *out_event = &m_power_state_request_manager.GetReadableEvent();
+ R_SUCCEED();
}
-void IPowerStateRequestHandler::GetAndClearPowerStateRequest(HLERequestContext& ctx) {
+Result IPowerStateRequestHandler::GetAndClearPowerStateRequest(Out<bool> out_cleared,
+ Out<u32> out_priority) {
LOG_DEBUG(Service_Time, "called.");
u32 priority{};
auto cleared = m_power_state_request_manager.GetAndClearPowerStateRequest(priority);
+ *out_cleared = cleared;
if (cleared) {
- IPC::ResponseBuilder rb{ctx, 4};
- rb.Push(ResultSuccess);
- rb.Push(priority);
- rb.Push(cleared);
- return;
+ *out_priority = priority;
}
-
- IPC::ResponseBuilder rb{ctx, 3};
- rb.Push(ResultSuccess);
- rb.Push(cleared);
+ R_SUCCEED();
}
} // namespace Service::PSC::Time